In a network environment, such as the internet, information may be shared among users even though the users may be geographically dispersed. In a typical day, millions of data packets (e.g., inter protocol packets) ma be shared between users across the network. Those skilled in the art are aware that a network may include a plurality of computer systems connected together via a plurality of network devices (e.g., routers, switches, gateways, firewalls, etc.) over a communication medium (e.g., wired medium, wireless medium, optical medium, and the like). Examples of a network may include, but are not limited to, the internet, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), and the like.
To route a data packet through the network, a protocol stack at each network device (e.g., node) may maintain a routing table to determine the route for transporting the data packet from the source location to the final destination. As discussed herein, a routing table refers to a list that may provide a path for routing a data packet based on the destination address of the data packet. To travel from a source location to a destination location, the data packet may have to “hop” from one network device (e.g., node) to the next. Traditionally, each routing table may only have knowledge of the next “hop”. In other words, even though there may be different paths for sending a data packet from a source location to a destination location, the “best route” may have already been established based on cost and nodes (e.g., routers, switches, gateways, firewalls, etc.) availability. Thus, the routing table at each of the node may include the next “hop” that will enable the data packet to be transmitted along the “best route” and reach its final destination.
In an example, an email is sent from location A to a destination B. Upon receiving a data packet associated with the email, a protocol stack in a router may refer to a routing table to determine the path for routing the data packet. The routing table may include the destination address and the path associated with the destination address. Based on the routing table, the protocol stack may be able to route the data packet to the next “hop” along the best route to the destination location.
However, the method of routing data packets primarily based on destination address provides little flexibility for data packets that may need to be sent along a different route. Consider the situation wherein, for example, a user wants to send all entails created by an email application through a secured path, such as a virtual private network (VPN). Even though the user may have this special security requirement, not all emails transmitted will be sent through a secured path. Instead, the path each email may be transmitted may depend upon the destination address of the email. In an example, emails that are sent to destination B may be sent along a secured path; however, emails sent to destination C may be routed along an unsecured path. As a result, the routing table is not able to accommodate the special requirements that a specific application may have since the routing table does not take into account the application source to determine routing.